<?php

namespace common\models;

class FormatCategory
{
    //拼装一维数组
    static public function unlimitedForLevel($cate,$html='─',$pid=0,$level=0)
    {
        //echo "1";
        $arr=array();
        foreach ($cate as $v){
            if ($v['pid']==$pid){
                $v['level']=$level+1;
                $v['html']=str_repeat($html,$level*2);
                $arr[]=$v;
                $arr=array_merge($arr,self::unlimitedForLevel($cate,$html,$v['id'],$level+1));
            }
        }
        return $arr;
    }

//拼装多维数组
    static public function unlimitedForLayer($cate,$name='child',$pid=0)
    {
        $arr=array();
        foreach ($cate as $v){
            if($v['pid']==$pid){
                $v[$name]=self::unlimitedForLayer($cate,$name,$v['id']);
                $arr[]=$v;
            }
        }
        return $arr;
    }

//传递一个子分类id返回所有的父级分类(制作面包屑导航)
    static public function getParents($cate,$id)
    {
        $arr=array();
        foreach ($cate as $v){
            if($v['id']==$id){
                $arr[]=$v;
                $arr=array_merge(self::getParents($cate,$v['pid']),$arr);
            }
        }
        return $arr;
    }

//传递一个父级id返回所有的子分类id
    static public function getChildsId($cate ,$pid)
    {
        $arr=array();
        foreach ($cate as $v){
            if($v['pid']==$pid){
                $arr[]=$v['id'];
                $arr=array_merge($arr,self::getChildsId($cate,$v['id']));
            }
        }
        return $arr;
    }

//传递一个父级分类id返回所有子类
    static public function getChilds($cate,$pid)
    {
        $arr=array();
        foreach ($cate as $v){
            if($v['pid']==$pid){
                $arr[]=$v;
                $arr=array_merge($arr,self::getChilds($cate,$v['id']));
            }
        }
        return $arr;
    }
}